package com.it.plic.Menthod;

import java.lang.reflect.Method;

/**
 * @author げっしょく
 * @date 2021/8/9
 */
public class Test1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
        //method1();
        //methon2();
        //method3();
        //
        //Method getDeclaredMethod(String name, Class<?>... parameterTypes)	返回单个成员方法对象
        //创建class类
        Class aClass = Class.forName("com.it.plic.Menthod.Student");
        //获取指定方法
        Method setAge = aClass.getDeclaredMethod("setAge", int.class);
        System.out.println(setAge);
    }

    private static void method3() throws ClassNotFoundException, NoSuchMethodException {
        //Method getMethod(String name, Class<?>... parameterTypes)	返回单个公共成员方法对象
        //    第一个参数时方法名，后面参数看方法参数而定数量第二个是参数类型.class
        //创建class类
        Class aClass = Class.forName("com.it.plic.Menthod.Student");
        //获取公共指定方法
        Method getAge = aClass.getMethod("getAge");
        System.out.println(getAge);
    }

    private static void methon2() throws ClassNotFoundException {
        //Method[] getDeclaredMethods()	返回所有成员方法对象的数组，不包括继承的
        //创建class类
        Class aClass = Class.forName("com.it.plic.Menthod.Student");
        //获取当前class中所有的方法，不包括继承
        Method[] methods = aClass.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
    }

    private static void method1() throws ClassNotFoundException {
        //Method[] getMethods()	返回所有公共成员方法对象的数组，包括继承的
        //创建class类
        Class aClass = Class.forName("com.it.plic.Menthod.Student");
        //获取所有的方法，包括父类继承的
        Method[] methods = aClass.getMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
    }
}
